package compilador.semantico.comando;

import compilador.Command;
import compilador.CommandException;
import compilador.semantico.GerenciadorDeContexto;
import compilador.semantico.Metodo;
import compilador.semantico.SemanticException;
import compilador.semantico.Variavel;

public class VerificaNumeroParametroCommand implements Command {

	@Override
	public void run(String... args) throws CommandException {
		GerenciadorDeContexto pilha = GerenciadorDeContexto.getInstance();
		try {
			Variavel var = pilha.top();
			if (var.temParametros()) {
				Metodo met = (Metodo) var;
				int numParam = pilha.getMetodoIndex();
				if (numParam != met.getNumParametros()) {
					throw new SemanticException("Numero de parametros invalidos!");
				}
			}
		} finally {
			pilha.zeraMetodoIndex();
		}
	}
}
